Replication is commonly employed to address the Quality of Service requirements of distributed applications. In general, distributed applications are software programs running on multiple computing nodes in a distributed computing network. Examples of distributed applications include electronic commerce (e-commerce) applications, financial institution commodity trading applications, private business entity applications, to name just a few.
While replication improves both scalability and availability, it also introduces the problem of maintaining data consistent among the replicated computer nodes. In particular, strong consistency, which requires that all replicated data are current at all times, requires considerable overhead.